package utils

import (
	"go_cms/app/param"
	"sort"
)

// 根据菜单，生成菜单树结构
func MakeMenuTree(menuList []*param.Menu) (tree_menu []*param.Menu){
	//var tree_menu []*param.Menu
	for _,menu1:=range menuList{
		if menu1.Type == 1{
			for _,menu2:=range menuList{
				if menu2.Type == 2{
					if menu2.ParentId == menu1.ID{
						menu1.Child=append(menu1.Child,menu2)
						for i:=0;i<len(menuList);i++{
							if menuList[i].Type == 3{
								if menuList[i].ParentId == menu2.ID{
									menu2.Child=append(menu2.Child,menuList[i])
									menuList = append(menuList[:i], menuList[(i+1):]...) //将元素从切片中移除
									i--
								}
							}
						}
					}

				}

			}
			tree_menu=append(tree_menu,menu1)
		}
	}
	sort.SliceStable(tree_menu, func(i, j int) bool {
		return tree_menu[i].Sort<tree_menu[j].Sort
	})
	return tree_menu
}
